// 用户信息管理模块

/**
 * 获取用户信息
 * @returns {Object|null} 用户信息对象或null
 */
export function getUserInfo() {
    // 同时检查所有可能的存储键，确保兼容性
    const userStr = localStorage.getItem('currentUser') || localStorage.getItem('user') || localStorage.getItem('userInfo');
    return userStr ? JSON.parse(userStr) : null;
}

/**
 * 设置用户信息
 * @param {Object} user 用户信息对象
 */
export function setUserInfo(user) {
    // 同时更新所有存储键以确保兼容性
    localStorage.setItem('currentUser', JSON.stringify(user));
    localStorage.setItem('user', JSON.stringify(user));
    localStorage.setItem('userInfo', JSON.stringify(user));
}

/**
 * 移除用户信息
 */
export function removeUserInfo() {
    // 同时删除所有存储键，确保完全清除用户信息
    localStorage.removeItem('currentUser');
    localStorage.removeItem('user');
    localStorage.removeItem('userInfo');
}

/**
 * 退出登录函数 - 供各页面调用
 */
export function logout() {
    // 清除用户信息
    removeUserInfo();
    
    // 跳转到登录页面（使用相对路径，避免路径问题）
    window.location.href = 'login.html';
}

/**
 * 更新用户信息显示
 */
export function updateUserInfo() {
    const user = getUserInfo();
    const userInfoEl = document.getElementById('user-info');
    const authButtonsEl = document.getElementById('auth-buttons');
    const usernameEl = document.getElementById('username');
    const userPointsEl = document.getElementById('user-points');
    const logoutBtn = document.getElementById('logout-btn');
    const checkoutBtn = document.getElementById('checkout-btn');
    const userAvatarEl = document.getElementById('user-icon');
    
    // 处理user-menu相关元素（如果存在）
    const userMenuBtn = document.getElementById('user-menu-btn');
    const userDropdown = document.getElementById('user-dropdown');
    const avatarPlaceholder = document.getElementById('avatar-placeholder');
    const dropdownUsername = document.getElementById('dropdown-username');
    
    if (user && userInfoEl && authButtonsEl) {
        userInfoEl.classList.remove('hidden');
        userInfoEl.classList.add('flex');
        authButtonsEl.classList.add('hidden');
        
        if (usernameEl) {
            usernameEl.textContent = user.username;
        }
        
        if (userPointsEl) {
            userPointsEl.textContent = `${user.points || 0}积分`;
        }
        
        // 为用户头像设置默认图像或使用用户头像
        if (userAvatarEl) {
            // 定义本地预设的默认头像
            const defaultAvatar = './default-avatar.svg'; // 本地默认头像路径
            
            // 检查用户是否有头像数据，如果有则使用，否则使用本地默认头像
            const avatarSrc = user.avatar ? user.avatar : defaultAvatar;
            
            // 创建新的图像元素并预加载，避免闪烁
            const img = new Image();
            img.onload = function() {
                // 图像加载完成后再更新DOM，避免显示旧头像
                userAvatarEl.closest('.rounded-full').innerHTML = `
                    <img src="${avatarSrc}" 
                         alt="用户头像" class="w-full h-full rounded-full object-cover">
                `;
            };
            // 如果图像加载失败，使用默认头像
            img.onerror = function() {
                userAvatarEl.closest('.rounded-full').innerHTML = `
                    <img src="${defaultAvatar}" 
                         alt="用户头像" class="w-full h-full rounded-full object-cover">
                `;
            };
            // 设置图像源开始加载
            img.src = avatarSrc;
        }
        
        // 处理下拉菜单样式的导航栏
        if (userMenuBtn && avatarPlaceholder) {
            // 定义本地预设的默认头像
            const defaultAvatar = './default-avatar.svg'; // 本地默认头像路径
            
            // 检查用户是否有头像数据，如果有则使用，否则使用本地默认头像
            const avatarSrc = user.avatar ? user.avatar : defaultAvatar;
            
            // 创建新的图像元素并预加载，避免闪烁
            const img = new Image();
            img.onload = function() {
                // 图像加载完成后再更新DOM，避免显示旧头像
                avatarPlaceholder.innerHTML = `
                    <img src="${avatarSrc}" 
                         alt="用户头像" class="w-full h-full rounded-full object-cover">
                `;
            };
            // 如果图像加载失败，使用默认头像
            img.onerror = function() {
                avatarPlaceholder.innerHTML = `
                    <img src="${defaultAvatar}" 
                         alt="用户头像" class="w-full h-full rounded-full object-cover">
                `;
            };
            // 设置图像源开始加载
            img.src = avatarSrc;
            
            // 更新小镇名称（导航栏显示）
            const userNameElement = document.getElementById('user-name');
            if (userNameElement) {
                // 添加调试信息
                console.log('=== AI调试信息 ===');
                console.log('用户数据:', user);
                console.log('小镇名称(username):', user.username);
                console.log('================');
                
                // 确保显示有效的小镇名称，如果username无效，使用默认值
                let townName = user.username;
                if (!townName || typeof townName !== 'string') {
                    townName = '快乐小镇'; // 默认小镇名称
                }
                userNameElement.textContent = townName; // 显示小镇名称
            }
            
            // 如果有下拉菜单，显示用户信息部分但保持下拉菜单隐藏
            if (userDropdown) {
                // 确保下拉菜单默认是隐藏的
                userDropdown.classList.add('hidden');
                
                const loginRegisterSection = userDropdown.querySelector('#login-register');
                const userInfoSection = userDropdown.querySelector('#user-info');
                
                if (loginRegisterSection) loginRegisterSection.classList.add('hidden');
                if (userInfoSection) userInfoSection.classList.remove('hidden');
                
                // 更新下拉菜单中的小镇名称和积分
                if (dropdownUsername) {
                    // 确保显示有效的小镇名称
                    let townName = user.username;
                    if (!townName || typeof townName !== 'string') {
                        townName = '快乐小镇'; // 默认小镇名称
                    }
                    dropdownUsername.textContent = townName; // 显示小镇名称
                }
                
                const dropdownPointsEl = document.getElementById('dropdown-points');
                if (dropdownPointsEl) {
                    dropdownPointsEl.textContent = user.points || 0;
                }
            }
        }
        
        // 确保logout按钮只绑定一次事件监听
        if (logoutBtn && !logoutBtn._logoutEventBound) {
            logoutBtn._logoutEventBound = true;
            logoutBtn.addEventListener('click', () => {
                // 调用定义的logout函数，确保统一的退出登录逻辑
                logout();
            });
        }
        
        if (checkoutBtn) {
            checkoutBtn.disabled = false;
        }
    } else if (userInfoEl && authButtonsEl) {
        userInfoEl.classList.add('hidden');
        userInfoEl.classList.remove('flex');
        authButtonsEl.classList.remove('hidden');
        
        // 处理下拉菜单样式的导航栏
        if (userMenuBtn && avatarPlaceholder) {
            // 重置头像占位符
            avatarPlaceholder.innerHTML = '<i class="fa fa-user text-gray-500"></i>';
            
            // 重置用户名称
            const userNameElement = document.getElementById('user-name');
            if (userNameElement) {
                userNameElement.textContent = '登录/注册';
            }
            
            // 如果有下拉菜单，显示登录/注册部分
            if (userDropdown) {
                const loginRegisterSection = userDropdown.querySelector('#login-register');
                const userInfoSection = userDropdown.querySelector('#user-info');
                
                if (loginRegisterSection) loginRegisterSection.classList.remove('hidden');
                if (userInfoSection) userInfoSection.classList.add('hidden');
            }
        }
        
        if (checkoutBtn) {
            checkoutBtn.disabled = true;
        }
    }
}